技術文章
技術問答
My Project
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
28
0
Software Development
RISC-V 與處理器之架構學習及應用
系列 第
28
篇
[Day28] CALL: Loader (4/5)
16th鐵人賽
凱特
2024-10-12 01:23:37
804 瀏覽
分享至
1.
Loader 的作用
:
輸入
:Loader 的輸入是已編譯並連結好的可執行檔案(例如,
a.out
for RISC-V)。
輸出
:Loader 的輸出是程式開始執行,將可執行檔載入記憶體並啟動程式。
可執行檔
:可執行檔存儲於磁碟上,當執行一個程式時,Loader 將其載入記憶體,並開始運行該程式。
操作系統角色
:實際上,Loader 是作業系統(OS)的一部分,負責將程式載入記憶體。載入程式是 OS 的一項任務。
2.
Loader 的具體功能
:
將程式載入新的位址空間
:
Loader 首先讀取可執行檔案的文件頭,以了解文本段和數據段的大小。
它會創建一個新的位址空間,該空間足夠存儲文本段、數據段以及一個堆疊段。
Loader 會將可執行文件中的指令和數據複製到新的位址空間中,並將傳遞給程式的參數複製到堆疊上。
初始化機器暫存器
:
大多數的暫存器會被清除,並且
堆疊指標(stack pointer,sp)
會被指向堆疊的第一個空閒位址。
跳轉到啟動程式
:
Loader 會跳轉到啟動程式(start-up routine),該程式會執行以下操作:
將傳遞給程式的參數從堆疊中複製到暫存器中,並設置程式計數器(PC)。
如果主程式(main routine)執行完畢,則通過 exit 系統呼叫終止程式。
3.
Loader 的詳細工作流程
:
讀取可執行檔案頭
:Loader 從可執行檔案中提取文本段和數據段的大小和位置,並在記憶體中分配相應的空間。
創建位址空間
:Loader 創建一個新的記憶體位址空間,並確保它有足夠的空間來存儲程式的文本、數據段,以及一個堆疊段。
複製數據
:將程式的指令和數據從可執行檔案中複製到位址空間。Loader 也會將傳遞給程式的參數放入堆疊中,以便程式能夠訪問這些參數。
初始化暫存器
:堆疊指標
sp
被初始化為堆疊的起始位址,其他暫存器則被清零。
跳轉到程式的啟動地址
:Loader 將程式的控制權交給其啟動程式,並設置程式計數器(PC)以開始執行程式。如果主程式返回,Loader 會執行系統呼叫來結束程式的執行。
留言
追蹤
檢舉
上一篇
[Day27] CALL: Linker (3/5)
下一篇
[Day29] 總結與流程 (5/5)
系列文
RISC-V 與處理器之架構學習及應用
共
30
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
26
[Day26] CALL: Assembler (2/5)
27
[Day27] CALL: Linker (3/5)
28
[Day28] CALL: Loader (4/5)
29
[Day29] 總結與流程 (5/5)
30
[Day30] 從抽象層次到效能改善
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
200
組
團體組數
6
組
累計文章數
1370
篇
最後報名日
9/15
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
分享資訊人員最佳筆記紀錄方案
表格型pdf 匯入excel
請問TIPTOP T100 Oracle DB正式區複製到測試區
熱門回答
分享資訊人員最佳筆記紀錄方案
表格型pdf 匯入excel
熱門文章
Day 10 RD 有程式碼證明自己做了什麼,那 QA 要拿什麼證明?
船舶應用,近海 4G LTE,航運 Starlink 整合運用
Claude code 新手篇 5:換 section 不斷線 — 把「當下進度」交接給下一個對話
模型到第七頁就忘了那個孩子
使用 Angular、Firebase AI Logic 與 Gemini Nano 打造混合式影像分析應用程式
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}